package org.scrumpmt.web;

import java.text.DecimalFormat;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.scrumpmt.domain.Esfuerzo;
import org.scrumpmt.domain.Tarea;
import org.scrumpmt.ejb.EsfuerzoFacade;

/**
 *
 * @author agumpg
 */
public class Task {

    EsfuerzoFacade esfuerzoFacade = lookupEsfuerzoFacadeBean();
    protected static final Logger log = Logger.getLogger(Task.class.getName());
    private String id;
    private String descripcion;
    private String estimacion;
    private String colaborador;
    private int estado;

    public Task() {
        this.id = "";
        this.descripcion = "";
        this.estimacion = "";
        this.colaborador = "";
        this.estado = 0;
    }

    public void fromEntity(Tarea tarea) {
        this.id = "id_" + tarea.getId().toString();
        this.descripcion = tarea.getDes();

        log.log(Level.INFO, "El id de la tarea a buscar esfuerzos es {0}", id.substring(3));
        List<Esfuerzo> lstEsfuerzos = (List<Esfuerzo>) esfuerzoFacade.findByTarea(id.substring(3));
        //List<Esfuerzo> lstEsfuerzos = (List<Esfuerzo>) tarea.getEsfuerzoCollection();
        if (lstEsfuerzos != null) {
            for (Esfuerzo e : lstEsfuerzos) {
                this.estimacion = this.estimacion + " | " + e.getDuracion();
            }
        }
        estimacion = estimacion.equals("") ? "N/A" : estimacion.substring(3);
        this.colaborador = tarea.getIdColaboradorFk().getNombre();
        this.estado = tarea.getIdEstadoFk().getId().intValue();
    }

    public String getEstimacion() {
        return estimacion;
    }

    public void setEstimacion(String estimacion) {
        this.estimacion = estimacion;
    }

    public String getColaborador() {
        return colaborador;
    }

    public void setColaborador(String colaborador) {
        this.colaborador = colaborador;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public int getEstado() {
        return estado;
    }

    public void setEstado(int estado) {
        this.estado = estado;
    }

    private EsfuerzoFacade lookupEsfuerzoFacadeBean() {
        try {
            Context c = new InitialContext();
            return (EsfuerzoFacade) c.lookup("java:global/ScrumPMT/ScrumPMT-ejb/EsfuerzoFacade!org.scrumpmt.ejb.EsfuerzoFacade");
        } catch (NamingException ne) {
            Logger.getLogger(getClass().getName()).log(Level.SEVERE, "exception caught", ne);
            throw new RuntimeException(ne);
        }
    }
}
